#include "Catapulta.h"
#include "../Dinamicos/Huevo.h"
#include "../Dinamicos/HuevoNegro.h"
#include "../../Auxiliares/Cuadrado.h"
#include "../../Escenario.h"
#include "../../Jugador.h"
#include <stdlib.h>
#include <math.h> 
Catapulta::Catapulta(short x, short y) : ObjetoEstatico(VIDA_CATAPULTA, new Cuadrado(x, y, 63, 63))
{
	cadencia = 0;
	tieneJugador = false;
}

Catapulta::~Catapulta(void)
{
	if(tieneJugador) jugador->catapultaMuere();
}

void Catapulta::vivir() {
	if (cadencia != 0 ) cadencia --;
}

void Catapulta::lanzarHuevo(Velocidad* velocidad) {
	if (cadencia == 0) {
		int r = rand() % 10;  // Genera un numero random entre 0 y 10
		Huevo* h;
		short signoX = 1;
		short signoY = 1;
		if ( velocidad->getX() < (this->getX()+ this->getFigura()->getAncho())) signoX = -1;
		if ( velocidad->getY() < this->getY()) signoY = -1;
		short vX = abs(velocidad->getX() - this->getX()- this->getFigura()->getAncho())/7;
		short vY = abs(velocidad->getY()-this->getY())/7;
		if(vX > 60) vX = 60;
		if(vY > 50) vY = 50;
		
		Velocidad * v = new Velocidad(vX*signoX,vY*signoY);

		if (r <= 6)
			h = new Huevo(this->getX() + this->getFigura()->getAncho() + Huevo::radio,this->getY()+ 10 + Huevo::radio,v,jugador);
		else
			h = new HuevoNegro(this->getX() + this->getFigura()->getAncho() + Huevo::radio,this->getY()+ 10 + Huevo::radio,v,jugador);
		
		this->getEscenario()->addObjeto(h);
		cadencia = 50;	
	}
	delete(velocidad);
}

void Catapulta::setJugador(Jugador *jugador) {
	this->jugador = jugador;
	tieneJugador = true;
}


short Catapulta::getPuntos() { return 0;}
